package com.hengpeng.itfinbase.persist;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Enumerated;

import com.hengpeng.common.web.annotation.HtmlInput;
import com.hengpeng.common.web.annotation.HtmlInputPattern;
import com.hengpeng.common.web.annotation.HtmlInputType;
import com.hengpeng.itfinbase.en.BorrowStatus;
import com.hengpeng.itfinbase.en.DurationType;
import com.hengpeng.itfinbase.en.InputStatus;
import com.hengpeng.itfinbase.en.RepaymentType;
import com.hengpeng.itfinbase.idAssign.AbstractAssign16IdEntity;

/**
 * <pre>
 * 借款信息表
 * </pre>
 * 
 * @author chenhui
 * @version 1.0, 2015-5-18
 */
@Entity
public class BorrowInfo extends AbstractAssign16IdEntity {
    /**
	 * 
	 */
    private static final long serialVersionUID = -3666315976312000738L;

    // /**
    // * <pre>
    // * 标的类型
    // * </pre>
    // * @author weiyuan
    // * @version 1.0, 2015年8月22日
    // */
    // public static enum BorrowInfoType
    // {
    // /**
    // * 信用标
    // */
    // CREDIT("信用标"),
    // /**
    // * 担保标
    // */
    // GURANTEE("担保标"),
    // /**
    // * 混合标的
    // */
    // MIX("混合标的");
    //
    // private String text;
    //
    // BorrowInfoType(String text)
    // {
    // this.text = text;
    // }
    //
    // public String getText()
    // {
    // return text;
    // }
    //
    // public void setText(String text)
    // {
    // this.text = text;
    // }
    // }

    // @Column(length = 25)
    // @Enumerated(javax.persistence.EnumType.STRING)
    // @HtmlInput(label = "标的类型", type = HtmlInputType.SELECT, labelProperty =
    // "text", index = 3)
    // private BorrowInfoType borrowInfoType;

    @Column(length = 25)
    @HtmlInput(label = "借款用途", type = HtmlInputType.TEXT, labelProperty = "text", index = 3)
    private String userFor;

    /**
     * 标的名称
     */
    @Column(length = 50)
    @HtmlInput(label = "标的名称", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
    private String borrowName;

    /**
     * 借款用户名
     */
    @Column(length = 50)
    @HtmlInput(label = "借款用户", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String borrowUserName;

    /**
     * 借款用户id
     */
    private Long borrowUserId;

    /**
     * 借款用户第三方托管账户id
     */
    private String borrowUserTrustAccountId;

    /**
     * 担保企业用户编号
     */
    private Long guaranteeUserId;

    /**
     * 担保企业用户托管账户id
     */
    private String guaranteeUserTrustAccountId;

    /**
     * 担保用户编号
     */
    @Column(length = 50)
    private String guaranteeRealName;

    /**
     * 还款方式
     */
    @Column(length = 25)
    @Enumerated(javax.persistence.EnumType.STRING)
    @HtmlInput(label = "还款方式", type = HtmlInputType.SELECT, labelProperty = "text", index = 3)
    private RepaymentType repaymentType;

    /**
     * 借款金额，单位：分
     */
    @HtmlInput(label = "借款金额(元)", type = HtmlInputType.TEXT, index = 4, pattern = HtmlInputPattern.INT, nullable = false)
    private Long borrowMoney;

    /**
     * 借款利率
     */
    @HtmlInput(label = "年化利率", type = HtmlInputType.TEXT, index = 5, pattern = HtmlInputPattern.FLOAT, nullable = false)
    private Double borrowRate;

    @HtmlInput(label = "可接受的最大年利率", type = HtmlInputType.TEXT, index = 5, pattern = HtmlInputPattern.FLOAT, nullable = false)
    private Double maxBearborrowRate;

    /**
     * 周期类型
     */
    @Column(length = 10)
    @Enumerated(javax.persistence.EnumType.STRING)
    @HtmlInput(label = "周期类型", type = HtmlInputType.SELECT, labelProperty = "text", index = 6)
    private DurationType durType;

    /**
     * 借款周期
     */
    @HtmlInput(label = "借款周期", type = HtmlInputType.TEXT, index = 7, pattern = HtmlInputPattern.INT, nullable = false)
    private Integer borrowDuration;

    /**
     * 募集时长(单位：小时)
     */
    @HtmlInput(label = "筹款时长(小时)", type = HtmlInputType.TEXT, index = 7, pattern = HtmlInputPattern.INT, nullable = false)
    private Integer raiseDuration;

    /**
     * 附加利率(奖励利率)
     */
    @HtmlInput(label = "附加利率(奖励)", tips = "平台奖励利率", type = HtmlInputType.TEXT, index = 8, pattern = HtmlInputPattern.FLOAT, nullable = false)
    private Double rewardRate;

    /**
     * 最小投标金额
     */
    @HtmlInput(label = "最小投标金额", type = HtmlInputType.TEXT, index = 9, pattern = HtmlInputPattern.INT, nullable = false)
    private Long minInvest;

    /**
     * 最大投标金额
     */
    @HtmlInput(label = "最大投标金额", type = HtmlInputType.TEXT, index = 10, pattern = HtmlInputPattern.INT, nullable = false)
    private Long maxInvest;

    /**
     * 投标金额增量
     */
    @HtmlInput(label = "投标金额增量", type = HtmlInputType.TEXT, index = 10, pattern = HtmlInputPattern.INT, nullable = false)
    private Long incMoney;

    /**
     * 借款服务费率
     */
    @HtmlInput(label = "借款服务费率", type = HtmlInputType.TEXT, index = 12, pattern = HtmlInputPattern.FLOAT, nullable = false)
    private Double borrowFeeRate;

    /**
     * 借款担保费率
     */
    @HtmlInput(label = "借款担保费率", type = HtmlInputType.TEXT, index = 13, pattern = HtmlInputPattern.FLOAT, nullable = false)
    private Double guaranteeFeeRate;

    /**
     * 借款管理费率
     */
    @HtmlInput(label = "借款管理费率", type = HtmlInputType.TEXT, index = 14, pattern = HtmlInputPattern.FLOAT, nullable = false)
    private Double managerFeeRate;

    /**
     * 状态
     */
    @Column(length = 20)
    @Enumerated(javax.persistence.EnumType.STRING)
    @HtmlInput(label = "状态", type = HtmlInputType.HIDDEN, labelProperty = "text", index = 7)
    private BorrowStatus status;

    /**
     * 借款申请创建时间
     */
    @HtmlInput(index = 8, label = "申请时间", type = HtmlInputType.HIDDEN, pattern = HtmlInputPattern.DATETIME, format = "yyyy-MM-dd HH:mm")
    private Date createTime;

    /**
     * 开标时间
     */
    @HtmlInput(index = 8, label = "开标时间", type = HtmlInputType.TEXT, pattern = HtmlInputPattern.DATETIME, format = "yyyy-MM-dd HH:mm")
    private Date bidOpenTime;

    @HtmlInput(index = 8, label = "截标时间", type = HtmlInputType.TEXT, pattern = HtmlInputPattern.DATETIME, format = "yyyy-MM-dd HH:mm")
    private Date bidStopTime;

    /**
     * 已募集金额(单位：元)
     */
    @HtmlInput(label = "已募集金额(元)", type = HtmlInputType.TEXT, index = 13, pattern = HtmlInputPattern.INT, nullable = false)
    private Long raiseMoney;

    /**
     * 已募集人数
     */
    @HtmlInput(label = "已募集人数", type = HtmlInputType.TEXT, index = 13, pattern = HtmlInputPattern.INT, nullable = false)
    private Integer raiseNum;

    /**
     * 满标时间
     */
    private Date fullTime;

    /**
     * 放款时间
     */
    private Date loanTime;

    /**
     * 还清时间
     */

    private Date repaymentedTime;

    /**
     * 标的描述
     */
    @Column(length = 1000)
    private String remark;

    /**
     * 担保说明
     */
    @Column(length = 1000)
    private String guaranteeDesc;
    /**
     * 担保情况
     */
    @Column(length = 1000)
    private String guaranteeCondition;
    /**
     * 反担保情况
     */
    @Column(length = 1000)
    private String fguaranteeCondition;
    /**
     * 风险控制情况
     */
    @Column(length = 1000)
    private String dangerDesc;

    /**
     * 抵押说明
     */
    @Column(length = 1000)
    private String mortgageDesc;
    /**
     * 抵押股权信息
     */
    @Column(length = 1000)
    private String mortgage_stock;
    /**
     * 抵押房产信息
     */
    @Column(length = 1000)
    private String mortgage_house;
    /**
     * 抵押土地信息
     */
    @Column(length = 1000)
    private String mortgage_land;
    /**
     * 抵押实物信息
     */
    @Column(length = 1000)
    private String mortgage_stuff;
    /**
     * 其他资产
     */
    @Column(length = 1000)
    private String mortgage_other;
    /**
     * 活动详情
     */
    @Column(length = 1000)
    private String active_desc;

    /**
     * 最后更新时间
     */
    private Date updateTime;

    /**
     * 标的三方录入的状态
     */
    @Column(length = 20)
    @Enumerated(javax.persistence.EnumType.STRING)
    private InputStatus inputStatus;

    /**
     * 是否收款计划
     */
    @Column(length = 20)
    @Enumerated(javax.persistence.EnumType.STRING)
    private BoolValue isMakeReceivePlan;

    /**
     * 是否生成还款计划
     */
    @Column(length = 20)
    @Enumerated(javax.persistence.EnumType.STRING)
    private BoolValue isMakeRepayPlan;

    /**
     * 是否有抵押物
     */
    @Column(length = 20)
    @Enumerated(javax.persistence.EnumType.STRING)
    private BoolValue hasmortgage;

    @Column(length = 50)
    @HtmlInput(label = "上年度营业额", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String lastyearsell;

    @Column(length = 50)
    @HtmlInput(label = "上年度资产负债率", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String lastyearfzl;

    @Column(length = 50)
    @HtmlInput(label = "上年度销售成本", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String lastyearsellcb;

    @Column(length = 50)
    @HtmlInput(label = "上年度净利润", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String lastyearjlr;

    @Column(length = 50)
    @HtmlInput(label = "营业执照注册号", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String yyzz;

    @Column(length = 50)
    @HtmlInput(label = "企业法人", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String qifr;
    /**
     * 是否有被公示不良记录
     */
    @Column(length = 20)
    @Enumerated(javax.persistence.EnumType.STRING)
    private BoolValue isunlegal;

    @Column(length = 50)
    @HtmlInput(label = "办公地址", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String businessaddress;

    @Column(length = 50)
    @HtmlInput(label = "联系电话", maxLength = 50, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String linkmobile;

    @Column(length = 50)
    @HtmlInput(label = "身份证正面文件名", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String idfrontfilename;

    @Column(length = 50)
    @HtmlInput(label = "身份证正面文件路径", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String idfrontfilepath;

    @Column(length = 50)
    @HtmlInput(label = "身份证背面文件名", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String idbackfilename;

    @Column(length = 50)
    @HtmlInput(label = "身份证背面文件路径", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String idbackfilepath;

    @Column(length = 50)
    @HtmlInput(label = "银行开户许可证文件名", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String bankpermitfilename;

    @Column(length = 50)
    @HtmlInput(label = "银行开户行许可证文件路径", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String bankpermitfilepath;

    @Column(length = 50)
    @HtmlInput(label = "上年度利润报表文件名称", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String profitfilename;

    @Column(length = 50)
    @HtmlInput(label = "上年度利润报表文件路径", maxLength = 500, type = HtmlInputType.TEXT, index = 2, nullable = false)
    private String profitfilepath;

    public String getGuaranteeCondition() {
        return guaranteeCondition;
    }

    public void setGuaranteeCondition(String guaranteeCondition) {
        this.guaranteeCondition = guaranteeCondition;
    }

    public String getFguaranteeCondition() {
        return fguaranteeCondition;
    }

    public void setFguaranteeCondition(String fguaranteeCondition) {
        this.fguaranteeCondition = fguaranteeCondition;
    }

    public String getDangerDesc() {
        return dangerDesc;
    }

    public void setDangerDesc(String dangerDesc) {
        this.dangerDesc = dangerDesc;
    }

    public String getMortgage_stock() {
        return mortgage_stock;
    }

    public void setMortgage_stock(String mortgage_stock) {
        this.mortgage_stock = mortgage_stock;
    }

    public String getMortgage_house() {
        return mortgage_house;
    }

    public void setMortgage_house(String mortgage_house) {
        this.mortgage_house = mortgage_house;
    }

    public String getMortgage_land() {
        return mortgage_land;
    }

    public void setMortgage_land(String mortgage_land) {
        this.mortgage_land = mortgage_land;
    }

    public String getMortgage_stuff() {
        return mortgage_stuff;
    }

    public void setMortgage_stuff(String mortgage_stuff) {
        this.mortgage_stuff = mortgage_stuff;
    }

    public String getMortgage_other() {
        return mortgage_other;
    }

    public void setMortgage_other(String mortgage_other) {
        this.mortgage_other = mortgage_other;
    }

    public String getProfitfilename() {
        return profitfilename;
    }

    public void setProfitfilename(String profitfilename) {
        this.profitfilename = profitfilename;
    }

    public String getProfitfilepath() {
        return profitfilepath;
    }

    public void setProfitfilepath(String profitfilepath) {
        this.profitfilepath = profitfilepath;
    }

    public String getIdfrontfilename() {
        return idfrontfilename;
    }

    public void setIdfrontfilename(String idfrontfilename) {
        this.idfrontfilename = idfrontfilename;
    }

    public String getIdfrontfilepath() {
        return idfrontfilepath;
    }

    public void setIdfrontfilepath(String idfrontfilepath) {
        this.idfrontfilepath = idfrontfilepath;
    }

    public String getIdbackfilename() {
        return idbackfilename;
    }

    public void setIdbackfilename(String idbackfilename) {
        this.idbackfilename = idbackfilename;
    }

    public String getIdbackfilepath() {
        return idbackfilepath;
    }

    public void setIdbackfilepath(String idbackfilepath) {
        this.idbackfilepath = idbackfilepath;
    }

    public String getBankpermitfilename() {
        return bankpermitfilename;
    }

    public void setBankpermitfilename(String bankpermitfilename) {
        this.bankpermitfilename = bankpermitfilename;
    }

    public String getBankpermitfilepath() {
        return bankpermitfilepath;
    }

    public void setBankpermitfilepath(String bankpermitfilepath) {
        this.bankpermitfilepath = bankpermitfilepath;
    }

    public String getYyzz() {
        return yyzz;
    }

    public void setYyzz(String yyzz) {
        this.yyzz = yyzz;
    }

    public String getQifr() {
        return qifr;
    }

    public void setQifr(String qifr) {
        this.qifr = qifr;
    }

    public BoolValue getIsunlegal() {
        return isunlegal;
    }

    public void setIsunlegal(BoolValue isunlegal) {
        this.isunlegal = isunlegal;
    }

    public String getBusinessaddress() {
        return businessaddress;
    }

    public void setBusinessaddress(String businessaddress) {
        this.businessaddress = businessaddress;
    }

    public String getLinkmobile() {
        return linkmobile;
    }

    public void setLinkmobile(String linkmobile) {
        this.linkmobile = linkmobile;
    }

    public String getLastyearsell() {
        return lastyearsell;
    }

    public void setLastyearsell(String lastyearsell) {
        this.lastyearsell = lastyearsell;
    }

    public String getLastyearfzl() {
        return lastyearfzl;
    }

    public void setLastyearfzl(String lastyearfzl) {
        this.lastyearfzl = lastyearfzl;
    }

    public String getLastyearsellcb() {
        return lastyearsellcb;
    }

    public void setLastyearsellcb(String lastyearsellcb) {
        this.lastyearsellcb = lastyearsellcb;
    }

    public String getLastyearjlr() {
        return lastyearjlr;
    }

    public void setLastyearjlr(String lastyearjlr) {
        this.lastyearjlr = lastyearjlr;
    }

    public Double getMaxBearborrowRate() {
        return maxBearborrowRate;
    }

    public void setMaxBearborrowRate(Double maxBearborrowRate) {
        this.maxBearborrowRate = maxBearborrowRate;
    }

    public BoolValue getHasmortgage() {
        return hasmortgage;
    }

    public void setHasmortgage(BoolValue hasmortgage) {
        this.hasmortgage = hasmortgage;
    }

    public String getUserFor() {
        return userFor;
    }

    public void setUserFor(String userFor) {
        this.userFor = userFor;
    }

    public BoolValue getIsMakeReceivePlan() {
        return isMakeReceivePlan;
    }

    public void setIsMakeReceivePlan(BoolValue isMakeReceivePlan) {
        this.isMakeReceivePlan = isMakeReceivePlan;
    }

    public BoolValue getIsMakeRepayPlan() {
        return isMakeRepayPlan;
    }

    public void setIsMakeRepayPlan(BoolValue isMakeRepayPlan) {
        this.isMakeRepayPlan = isMakeRepayPlan;
    }

    public InputStatus getInputStatus() {
        return inputStatus;
    }

    public void setInputStatus(InputStatus inputStatus) {
        this.inputStatus = inputStatus;
    }

    public Date getBidStopTime() {
        return bidStopTime;
    }

    public void setBidStopTime(Date bidStopTime) {
        this.bidStopTime = bidStopTime;
    }

    public String getBorrowUserTrustAccountId() {
        return borrowUserTrustAccountId;
    }

    public void setBorrowUserTrustAccountId(String borrowUserTrustAccountId) {
        this.borrowUserTrustAccountId = borrowUserTrustAccountId;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getBorrowUserName() {
        return borrowUserName;
    }

    public void setRaiseDuration(Integer raiseDuration) {
        this.raiseDuration = raiseDuration;
    }

    public Integer getRaiseDuration() {
        return raiseDuration;
    }

    public RepaymentType getRepaymentType() {
        return repaymentType;
    }

    public void setRepaymentType(RepaymentType repaymentType) {
        this.repaymentType = repaymentType;
    }

    public void setBorrowUserName(String borrowUserName) {
        this.borrowUserName = borrowUserName;
    }

    public String getBorrowName() {
        return borrowName;
    }

    public void setBorrowName(String borrowName) {
        this.borrowName = borrowName;
    }

    public DurationType getDurType() {
        return durType;
    }

    public void setDurType(DurationType durType) {
        this.durType = durType;
    }

    public Integer getBorrowDuration() {
        return borrowDuration;
    }

    public void setBorrowDuration(Integer borrowDuration) {
        this.borrowDuration = borrowDuration;
    }

    public Long getBorrowMoney() {
        return borrowMoney;
    }

    public void setBorrowMoney(Long borrowMoney) {
        this.borrowMoney = borrowMoney;
    }

    public Double getBorrowRate() {
        return borrowRate;
    }

    public void setBorrowRate(Double borrowRate) {
        this.borrowRate = borrowRate;
    }

    public Double getRewardRate() {
        return rewardRate;
    }

    public void setRewardRate(Double rewardRate) {
        this.rewardRate = rewardRate;
    }

    public Long getMinInvest() {
        return minInvest;
    }

    public void setMinInvest(Long minInvest) {
        this.minInvest = minInvest;
    }

    public Long getMaxInvest() {
        return maxInvest;
    }

    public void setMaxInvest(Long maxInvest) {
        this.maxInvest = maxInvest;
    }

    public Long getIncMoney() {
        return incMoney;
    }

    public void setIncMoney(Long incMoney) {
        this.incMoney = incMoney;
    }

    public Double getBorrowFeeRate() {
        return borrowFeeRate;
    }

    public void setBorrowFeeRate(Double borrowFeeRate) {
        this.borrowFeeRate = borrowFeeRate;
    }

    public Double getGuaranteeFeeRate() {
        return guaranteeFeeRate;
    }

    public void setGuaranteeFeeRate(Double guaranteeFeeRate) {
        this.guaranteeFeeRate = guaranteeFeeRate;
    }

    public BorrowStatus getStatus() {
        return status;
    }

    public void setStatus(BorrowStatus status) {
        this.status = status;
    }

    public Double getManagerFeeRate() {
        return managerFeeRate;
    }

    public void setManagerFeeRate(Double managerFeeRate) {
        this.managerFeeRate = managerFeeRate;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getBidOpenTime() {
        return bidOpenTime;
    }

    public void setBidOpenTime(Date bidOpenTime) {
        this.bidOpenTime = bidOpenTime;
    }

    public Long getRaiseMoney() {
        return raiseMoney;
    }

    public void setRaiseMoney(Long raiseMoney) {
        this.raiseMoney = raiseMoney;
    }

    public Integer getRaiseNum() {
        return raiseNum;
    }

    public void setRaiseNum(Integer raiseNum) {
        this.raiseNum = raiseNum;
    }

    public Date getFullTime() {
        return fullTime;
    }

    public void setFullTime(Date fullTime) {
        this.fullTime = fullTime;
    }

    public Date getLoanTime() {
        return loanTime;
    }

    public void setLoanTime(Date loanTime) {
        this.loanTime = loanTime;
    }

    public Date getRepaymentedTime() {
        return repaymentedTime;
    }

    public void setRepaymentedTime(Date repaymentedTime) {
        this.repaymentedTime = repaymentedTime;
    }

    public String getGuaranteeDesc() {
        return guaranteeDesc;
    }

    public void setGuaranteeDesc(String guaranteeDesc) {
        this.guaranteeDesc = guaranteeDesc;
    }

    public String getMortgageDesc() {
        return mortgageDesc;
    }

    public void setMortgageDesc(String mortgageDesc) {
        this.mortgageDesc = mortgageDesc;
    }

    public Long getGuaranteeUserId() {
        return guaranteeUserId;
    }

    public void setGuaranteeUserId(Long guaranteeUserId) {
        this.guaranteeUserId = guaranteeUserId;
    }

    public String getGuaranteeRealName() {
        return guaranteeRealName;
    }

    public void setGuaranteeRealName(String guaranteeRealName) {
        this.guaranteeRealName = guaranteeRealName;
    }

    public Long getBorrowUserId() {
        return borrowUserId;
    }

    public void setBorrowUserId(Long borrowUserId) {
        this.borrowUserId = borrowUserId;
    }

    public String getGuaranteeUserTrustAccountId() {
        return guaranteeUserTrustAccountId;
    }

    public void setGuaranteeUserTrustAccountId(String guaranteeUserTrustAccountId) {
        this.guaranteeUserTrustAccountId = guaranteeUserTrustAccountId;
    }

    public String getActive_desc() {
        return active_desc;
    }

    public void setActive_desc(String active_desc) {
        this.active_desc = active_desc;
    }

}
